The coastal area of Cabrillo National Monument contains valued and rare natural resources in southern California, including: sea cliff, maritime sage scrub and rocky intertidal habitat. The number of visitors, or visitation, to the coastal area has been monitored 2011-2020 using infrared trail counters positioned along the Coastal Trail near two entrances to the area (Lot 1 and Lot 2 along Gatchell Road in San Diego, CA, USA). Data from over 600 files, documenting over 4 million visitors to the coastal area of Cabrillo National Monument, are synthesized in this report to answer the following questions:
# make visit_est into an interactive table
visit_table <- visit_est %>%
# more human-friendly table layout
pivot_wider(names_from = 'Location', values_from = 'Visitors') %>%
# some math for total visitation to coastal area
mutate(`Coastal area` = round(`Lot 1` + `Lot 2`, digits = 0),
# math to get percent of visitors to coastal area
`Percent of all visitors in coastal area` =
scales::percent(`Coastal area`/(`Coastal area` + `Entrance station`),
accuracy = 0.1)) %>%
# select relevant columns in order to be presented
select(Year, `Entrance station`, `Coastal area`,
`Percent of all visitors in coastal area`)
# create formatted table
visit_table_static <- formattable(visit_table,
# L justify columns
align = 'l',
# column list for custom formatting
list(
# create bar for % of total visitors to coastal area
`Percent total visitors to coastal area` = color_tile
(cal_palette('tidepool')[1])))
DT::datatable(visit_table_static,
# display table only
options = list(dom = 't'),
# stripe and add borders to cells
class = 'cell-border stripe',
# no first numbered row
rownames = FALSE,
# make caption for table
caption = 'Visitors to Cabrillo National Monument 2011-2020')
Table of visitation to the entrance station, Lot 1 and Lot 2 between 2011 and 2020.
remove(visit_table, visit_est2, visit_table_static)
# setup plot
dow_static <- ggplot(data = filter(weekday, lot == 'Lot 1' & events >= 10),
mapping = aes(x = dow, y = events, fill = dow,
color = dow, alpha = 0.2)) +
geom_jitter(alpha = 0.3, size = 1) +
coord_cartesian(ylim = c(0,2500)) +
scale_y_continuous(labels = scales::label_number(big.mark = ',')) +
scale_color_manual(values = cal_palette(name = 'tidepool', n = 7,
type = 'continuous')) +
scale_fill_manual(values = cal_palette(name = 'tidepool', n = 7,
type = 'continuous')) +
xlab('Day of the week') +
ylab('Visitors per day') +
geom_boxplot(color = 'black', outlier.shape = NA) +
lltheme_light +
theme(legend.position = 'none',
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text = element_text(size = 12, hjust = 1, color = 'black'),
axis.text.x = element_text(angle = 45),
aspect.ratio = 1)
# this plot is too busy for interactivity - keep static
dow_static
We compared the number of visitors on holidays paired with non-holidays that were 14 days after holidays. We included some holiday-adjacent days, such as the day after Thanksgiving, because staff noted high visitation on those days.
The plot below shows the difference in the number of visitors between holidays and paired non-holidays. Stars indicate significant differences in visitation (paired t-test p < 0.05).
ggplot(data = filter(holiday_test, lot == 'Lot 1')) +
geom_col(mapping = aes(y = mean_dif, x = fct_rev(holiday), fill = pval_sig)) +
geom_errorbar(mapping = aes(x = fct_rev(holiday), ymin = (mean_dif - se_dif),
ymax = (mean_dif + se_dif), width = 0.3),
color = 'gray30') +
scale_fill_manual(values = c(cal_palette('tidepool')[4], cal_palette('tidepool')[1])) +
geom_text(mapping = aes(x = 14, y = -100, label = 'Fewer visitors'),
color = 'gray40', hjust = 0.95, size = 3.5) +
geom_text(mapping = aes(x = 14, y = 100, label = 'More visitors'),
color = 'gray40', hjust = 0, size = 3.5) +
geom_text(data = filter(holiday_test, lot == 'Lot 1' & pval_sig == TRUE),
mapping = aes(x = fct_rev(holiday), y = (mean_dif + se_dif + 100),
label = '*'), color = 'black') +
geom_hline(yintercept = 0, linetype = 'dashed', color = 'gray40', size = 1) +
coord_flip(xlim = c(1,14)) +
scale_y_continuous(breaks = seq(-1000,1000, by = 500), limits = c(-1200,1200)) +
ylab('Difference in visitation') +
xlab('Holiday') +
lltheme_light +
theme(legend.position = 'none',
panel.grid = element_blank(),
text = element_text(color = 'black', size = 12),
axis.text = element_text(color = 'black'),
axis.text.x = element_text(angle = 45, hjust = 1),
aspect.ratio = 1)